﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using ObjetoNegocio;

namespace Banco
{
    class ValorBD:BancoAbstrato<Valor>
    {
        public override bool Remover(Valor t)
        {
            throw new System.NotImplementedException();
        }

        public override bool Atualizar(Valor t)
        {
            throw new System.NotImplementedException();
        }

        public override Valor Pesquisar(Valor valor)
        {
            const decimal codigoNulo = default(decimal);
            ComandoSql("[dbo].[cons_TBL_ValorPorFiltro]", CommandType.StoredProcedure);
            AdicionarParametroNulo("@codigo", valor.Codigo);
            AdicionarParametroNulo("@descricao", valor.Descricao);
            AdicionarParametroNulo("@codAtributo", codigoNulo);
            return ExecutarConsultaObjeto();
        }

        public Valor Pesquisar<U>(Valor valor,U fk) where U:IObject
        {
            ComandoSql("[dbo].[cons_TBL_ValorPorFiltro]", CommandType.StoredProcedure);
            AdicionarParametroNulo("@codigo", valor.Codigo);
            AdicionarParametroNulo("@descricao", valor.Descricao);
            AdicionarParametroNulo("@codAtributo",fk.Codigo);
            return ExecutarConsultaObjeto();
        }

        public List<Valor> ListarPorFiltro<U>(Valor valor,U fk) where U:IObject
            
        {
            ComandoSql("[dbo].[cons_TBL_ValorPorFiltro]", CommandType.StoredProcedure);
            AdicionarParametroNulo("@codigo", valor.Codigo);
            AdicionarParametroNulo("@descricao", valor.Descricao);
            AdicionarParametroNulo("@codAtributo", fk.Codigo);
            return ExecutarConsultarListagem();
        }

        public override void Inserir(Valor t)
        {
            throw new System.NotImplementedException();
        }

        public override bool Existe(Valor t)
        {
            throw new System.NotImplementedException();
        }

        protected override void MontarObjeto(ref Valor valor, IDataReader reader)
        {
            if (reader["CODIGO"] != DBNull.Value)
            {
                valor.Codigo = (decimal)reader["CODIGO"];
            }

            if (reader["DESCRICAO"] != DBNull.Value)
            {
                valor.Descricao = reader["DESCRICAO"].ToString();
            }

            
        }
    }
}
